
package ec.edu.ucacue.siop.dao.recurso;

import java.math.BigDecimal;
import java.util.ArrayList;

import ec.edu.ucacue.siop.dao.GenericDAOImpl;
import ec.edu.ucacue.siop.modelo.dinamica.producto.ModeloProducto;
import ec.edu.ucacue.siop.modelo.dinamica.unidad.Comportamiento;
import ec.edu.ucacue.siop.modelo.recurso.CompetenciaDisponibleUF;
import ec.edu.ucacue.siop.modelo.recurso.DocumentoUsado;
import ec.edu.ucacue.siop.modelo.recurso.EnergiaUso;
import ec.edu.ucacue.siop.modelo.recurso.MaterialDefUso;
import ec.edu.ucacue.siop.modelo.recurso.MaterialDefProd;
import ec.edu.ucacue.siop.modelo.recurso.RequerimientoEquipo;
import ec.edu.ucacue.siop.modelo.recurso.RequerimientoRH;
import ec.edu.ucacue.siop.modelo.recurso.UnidadFuncional;
import ec.edu.ucacue.siop.modelo.recurso.VariableAlimentacion;
import ec.edu.ucacue.siop.modelo.recurso.VariableCalidad;
import ec.edu.ucacue.siop.modelo.recurso.VariableEvento;
import ec.edu.ucacue.siop.modelo.recurso.VariableProceso;
import ec.edu.ucacue.siop.modelo.recurso.equipo.Equipo;
import ec.edu.ucacue.siop.modelo.recurso.equipo.EquipoAsignacion;
import ec.edu.ucacue.siop.modelo.recurso.talentoHumano.PersonalOperarioAsignacion;


public class UnidadFuncionalDAOImpl extends GenericDAOImpl<UnidadFuncional, BigDecimal> implements UnidadFuncionalDAO {
	
	public UnidadFuncional createUnidadFuncional(String nombre, String nombre2,
			UnidadFuncional padre, String nombreNivel, int nivel) {
			UnidadFuncional unidad = new UnidadFuncional();
			unidad.setListaPersonal(new ArrayList<PersonalOperarioAsignacion>());
			unidad.setListaReqEquipo(new ArrayList<RequerimientoEquipo>());
			unidad.setListaReqRH(new ArrayList<RequerimientoRH>());
			unidad.setListaUnidadHija(new ArrayList<UnidadFuncional>());
			unidad.setListaCompetencia(new ArrayList<CompetenciaDisponibleUF>());
			unidad.setListaModeloProducto(new ArrayList<ModeloProducto>());
			unidad.setListaComportamiento(new ArrayList<Comportamiento>());
			unidad.setListaDocumento(new ArrayList<DocumentoUsado>());
			unidad.setListaVarCalidad(new ArrayList<VariableCalidad>());
			unidad.setListaVarEvento(new ArrayList<VariableEvento>());
			unidad.setListaVarProceso(new ArrayList<VariableProceso>());
			unidad.setListaVariableAlimentacion(new ArrayList<VariableAlimentacion>());
			unidad.setListaEnergia(new ArrayList<EnergiaUso>());
			unidad.setListaProductosEntrada(new ArrayList<MaterialDefUso>());
			unidad.setListaProductosSalida(new ArrayList<MaterialDefProd>());
			
			unidad.setNombre(nombre);
			unidad.setNombre2(nombre2);
			unidad.setNivel(nivel);
			unidad.setNombreNivel(nombreNivel);
			if(padre != null) {
				unidad.setUnidadPadre(padre);
				padre.getListaUnidadHija().add(unidad);
			}
		return unidad;
	}

	public void agregarUnidadFuncionalHija(UnidadFuncional unidad, UnidadFuncional hija) {
		unidad.getListaUnidadHija().add(hija);
	}

	public void agregarEquipo(UnidadFuncional unidad, Equipo equipo) {
		EquipoAsignacion asignacion = new EquipoAsignacion();
		asignacion.setEquipo(equipo);
		asignacion.setUnidad(unidad);
		unidad.getListaAsignacion().add(asignacion);
	}

	public void agregarModeloProducto(UnidadFuncional unidad,
			ModeloProducto modelo) {
		modelo.setUnidad(unidad);
		unidad.getListaModeloProducto().add(modelo);
		
	}


}
